home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 93 / SGDS 93.2mg / SDGS.93 / SDB93 / B / LATIN.PRG (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-05-22  |  5.9 KB  |  244 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 1  PRINT  CHR$(21)
  2. 2  INVERSE : SPEED= 255
  3. 5  REM <CTRL-0x0a>WINDOWRTNS TAKES FROM $800 TO $0DFF
  4. 10  PRINT  CHR$(4)"-latin.wbx"
  5. 20  POKE 48688, PEEK(0): POKE 48689, PEEK(1)
  6. 30  REM  LOAD FONT AT $0E00
  7. 40  DIM LA$(50),EN$(50),PH$(50),QU(50),MS$(20): REM LATIN,ENG,DEF,ORDER,MISSED
  8. 41  FOR C1 = 0 TO 48: REM  INIT ORDER ARRAY FOR QUESTIONS
  9. 42 QU(C1) = C1
  10. 43  NEXT 
  11. 50 RN$ = "      I  II III  IV   V  VI VII": REM    roman numerals
  12. 60  REM <CTRL-0x0a>ROUTINE LOCATIONS
  13. 70 BOX = 2051
  14. 80 OBOX = 2054
  15. 90 CBOX = 2057
  16. 100  REM <CTRL-0x0a><CTRL-0x0a>** DATA STORAGE IS $1100 **<CTRL-0x0a><CTRL-0x0a>
  17. 110  REM <CTRL-0x0a>TO CHANGE DATA STORAGE,<CTRL-0x0a>
  18. 120  REM <CTRL-0x0a><CTRL-0x0a>POKE2060,LOBYTE
  19. 130  REM <CTRL-0x0a>POKE2061,HIBYTE<CTRL-0x0a><CTRL-0x0a>
  20. 140  SPEED= 255
  21. 150  GOSUB 61000
  22. 160  REM ?     CHR$ (20) CHR$ (12)
  23. 170  REM forBM = 4 TO 22 STEP 2 
  24. 180  REM d=12 - BM / 2:P = BM: GOSUB 60000  
  25. 190  REM callBOX,2,2,38,BM 
  26. 200  CALL BOX,4,6,34,13
  27. 210  REM next
  28. 220  REM callBOX,2,2,38,22: PRINT  CHR$ (12)
  29. 230  GOSUB 63000
  30. 240  PRINT  CHR$(20): VTAB 22: HTAB 6: PRINT "Tempus omnia revelat. Moramus."
  31. 250  GOSUB 11000
  32. 260 PR$ = "Press a key.": GOSUB 50000: GET K$
  33. 270  GOSUB 10000
  34. 280  GOSUB 52000
  35. 290  CALL BOX,12,8,17,8
  36. 300  PRINT " Menu Mainus"
  37. 310  PRINT 
  38. 320  PRINT "   I. Datum"
  39. 330  PRINT "  II. Lexicon"
  40. 340  PRINT " III. Quis"
  41. 350  PRINT "  IV. Quietus"
  42. 360 PR$ = "touch 1-4, or ESC to exit": GOSUB 50000
  43. 370  GET K$: IF K$ =  CHR$(27)  THEN K$ = "4"
  44. 380 M1 =  VAL(K$): IF M1 <1  OR M1 >4  THEN 370
  45. 390  ON M1 GOSUB 21000,22000,23000,24000
  46. 400  GOTO 270
  47. 410  GOTO 220
  48. 9999  END 
  49. 10000  REM <CTRL-0x0a> screen clear<CTRL-0x0a>
  50. 10010 H = 3:V = 3:W = 36:HT = 20
  51. 10020  CALL BOX,H,V,W,HT
  52. 10030 H = H +1:V = V +1:W = W -2:HT = HT -2: IF H <11  THEN 10020
  53. 10040  CALL BOX,H,V,W,HT
  54. 10050 H = H -1:V = V -1:W = W +2:HT = HT +2: IF H >1  THEN 10040
  55. 10060  RETURN 
  56. 11000  REM  <CTRL-0x0a>read data files<CTRL-0x0a>
  57. 11010  PRINT  CHR$(4)"openlatin.lat"
  58. 11020  PRINT  CHR$(4)"readlatin.lat"
  59. 11030  FOR T1 = 0 TO 48
  60. 11040  GOSUB 59000: REM  input
  61. 11050 LA$(T1) = IN$
  62. 11060  NEXT 
  63. 11070  PRINT  CHR$(4)"close"
  64. 11110  PRINT  CHR$(4)"openlatin.eng"
  65. 11120  PRINT  CHR$(4)"readlatin.eng"
  66. 11130  FOR T1 = 0 TO 48
  67. 11140  GOSUB 59000: REM  input   
  68. 11150 EN$(T1) = IN$
  69. 11160  NEXT 
  70. 11170  PRINT  CHR$(4)"close"
  71. 11210  PRINT  CHR$(4)"openlatin.phr"
  72. 11220  PRINT  CHR$(4)"readlatin.phr"
  73. 11230  FOR T1 = 0 TO 48
  74. 11240  GOSUB 59000: REM   input   
  75. 11250 PH$(T1) = IN$
  76. 11260  NEXT 
  77. 11270  PRINT  CHR$(4)"close"
  78. 11300  RETURN 
  79. 21000  REM <CTRL-0x0a>datum<CTRL-0x0a>
  80. 21005  GOSUB 10000
  81. 21010  CALL BOX,4,6,33,13
  82. 21020  GOSUB 63000
  83. 21025 PR$ = " ": GOSUB 50000
  84. 21030  GET K$
  85. 21040  RETURN 
  86. 22000  REM <CTRL-0x0a>LEXICON<CTRL-0x0a>
  87. 22010  GOSUB 10000
  88. 22020  GOSUB 52000
  89. 22030  CALL BOX,13,6,15,3: PRINT "   Lexicon"
  90. 22035 BS = 0: REM    base for list
  91. 22038  IF BS >48  THEN BS = 0
  92. 22040  CALL BOX,3,9,36,13
  93. 22045  PRINT 
  94. 22050  FOR T1 = 0 TO 6
  95. 22060  PRINT  MID$ (RN$,(T1 +1) *4,4)". "LA$(BS +T1)
  96. 22070  NEXT 
  97. 22075  PRINT 
  98. 22080  PRINT "   A. Ad alia verbae"
  99. 22090 PR$ = "press 1-7, " + CHR$(34) +"A" + CHR$(34) +" or ESC": GOSUB 50000
  100. 22100  GET K$
  101. 22110  IF K$ = "A"  OR K$ = "a"  THEN BS = BS +7: GOTO 22038
  102. 22120  IF K$ =  CHR$(27)  THEN 22998
  103. 22130  IF   NOT  VAL(K$)  THEN 22090
  104. 22134  IF  VAL(K$) >7  THEN 22090
  105. 22140 IX =  VAL(K$) -1: GOSUB 30000: GOTO 22090: REM     lexicon display   
  106. 22998  RETURN 
  107. 23000  REM <CTRL-0x0a>quizzus<CTRL-0x0a>
  108. 23010  GOSUB 10000: GOSUB 52000
  109. 23020  CALL BOX,6,8,28,8
  110. 23030  PRINT " Menu Quisae"
  111. 23040  PRINT 
  112. 23050  PRINT "   I. English to Latin"
  113. 23060  PRINT "  II. Latin to English"
  114. 23070  PRINT " III. Exit to Main Menu"
  115. 23090 PR$ = "touch 1-3, or ESC to exit": GOSUB 50000
  116. 23100  GET K$: IF K$ =  CHR$(27)  THEN K$ = "3"
  117. 23110 M2 =  VAL(K$)
  118. 23115 EX = 0
  119. 23120  ON M2 GOSUB 41000,41000,43000
  120. 23122  ON EX GOTO 23140
  121. 23130  GOTO 23010
  122. 23140  RETURN 
  123. 24000  REM <CTRL-0x0a>quittus<CTRL-0x0a>
  124. 24005  GOSUB 10000: GOSUB 52000
  125. 24010  CALL BOX,4,11,33,3
  126. 24020  PRINT "   Do you want to quit? (Y/N)"
  127. 24025 PR$ = "press Y or N": GOSUB 50000
  128. 24030  GET K$
  129. 24040  IF K$ < >"Y"  AND K$ < >"N"  AND K$ < >"y"  AND K$ < >"n"  THEN P = 21:D = 12: GOSUB 60000:P = 25: GOSUB 60000: GOTO 24010
  130. 24050  IF K$ = "Y"  OR K$ = "y"  THEN  PRINT  CHR$(4)"bye"
  131. 24060  RETURN 
  132. 30000  REM <CTRL-0x0a>lexicon display<CTRL-0x0a>
  133. 30010  CALL OBOX,3,9,17,6: PRINT "Latin:"
  134. 30020 OUT$ = LA$(BS +IX): GOSUB 51000
  135. 30030  CALL OBOX,20,9,19,6: PRINT "Translation:"
  136. 30040 OUT$ = EN$(BS +IX): GOSUB 51000
  137. 30050  CALL OBOX,3,15,36,7: PRINT "Definition:"
  138. 30060 OUT$ = PH$(BS +IX): GOSUB 51000
  139. 30070 PR$ = "press a key.": GOSUB 50000
  140. 30080  GET K$
  141. 30085  CALL CBOX: CALL CBOX: CALL CBOX
  142. 30090  RETURN 
  143. 41000  REM <CTRL-0x0a>eng to lat<CTRL-0x0a>
  144. 41020  FOR QL = 0 TO 19:MS$(QL) = "": NEXT :MS = 0: REM  misses
  145. 41070  FOR QL = 0 TO 19
  146. 41071 EX = 0
  147. 41072 SB = QL: GOSUB 49000: REM   SHUFFLE UP FROM SB ELEMENT
  148. 41080  GOSUB 41500: REM   question
  149. 41086  IF EX  THEN QL = 19
  150. 41090  NEXT QL
  151. 41091  IF EX  THEN 41100
  152. 41092  REM   results!
  153. 41094  IF   NOT MS  THEN  CALL OBOX,12,12,16,8:OUT$ = "You got them all right!": GOSUB 51000: GOSUB 55000: PRINT " Press a key.": GET K$: GOTO 41100
  154. 41096  CALL OBOX,2,2,38,22
  155. 41097  ON MS <19 GOSUB 41200: FOR QL = 0 TO MS -1: PRINT  SPC( (18 - LEN(MS$(QL))/2))MS$(QL): NEXT : PRINT  CHR$(20): VTAB 1: HTAB 13: PRINT "Items you missed:": REM SPC( (18 -  LEN (MS$(QL)) / 2))
  156. 41098 PR$ = "press a key.": GOSUB 50000: GET K$: PRINT  CHR$(20) CHR$(12)
  157. 41100  CALL CBOX:EX = 0: RETURN 
  158. 41200  FOR QL = 1 TO (20 -MS)/2: PRINT : NEXT : RETURN 
  159. 41500  REM  <CTRL-0x0a>eng/lat ques
  160. 41510  CALL BOX,2,2,38,22
  161. 41520  GOSUB 52000
  162. 41530  CALL BOX,3,7,36,8
  163. 41540  ON M2 GOSUB 41800,41810
  164. 41550  GOSUB 51000
  165. 41560  CALL BOX,3,15,36,6
  166. 41570  PRINT "  I.": PRINT " II.": PRINT "III.": PRINT " IV.": POKE 32, PEEK(32) +4: HOME 
  167. 41580  FOR Q8 = 1 TO 4
  168. 41590  ON M2 GOSUB 41900,41910
  169. 41600  NEXT 
  170. 41610 AN$ = AN$(1): REM    KEEP CORRECT ANSWER
  171. 41620  GOSUB 48000: REM    SHUFFLE ANSWERS
  172. 41630  FOR Q8 = 1 TO 4: PRINT " "AN$(Q8): NEXT 
  173. 41635 PR$ = "touch 1-4, or ESC to exit": GOSUB 50000
  174. 41640  GET K$
  175. 41641  IF K$ =  CHR$(27)  THEN EX = 1: GOSUB 53000: IF EX  THEN 41670
  176. 41645  IF K$ <"1"  OR K$ >"4"  THEN PR$ = "touch 1-4, or ESC to exit": GOSUB 50000: GOTO 41640
  177. 41646 KY =  VAL(K$)
  178. 41650  IF AN$ = AN$(KY)  THEN  CALL OBOX,12,14,16,8:OUT$ = AN$ +" is correct!": GOSUB 51000: PRINT : PRINT " Press a key.":P = 5:D = 8: GOSUB 60000: GET K$: CALL CBOX
  179. 41652  IF AN$ < >AN$(KY)  THEN MS$(MS) = AN$:MS = MS +1: CALL OBOX,12,14,16,8:OUT$ = "The correct answer was: " +AN$: GOSUB 51000: PRINT : PRINT " Press a key.": GET K$: CALL CBOX
  180. 41670  RETURN 
  181. 41800  PRINT QL +1" of 20: Select the Latin for:":OUT$ = PH$(QU(QL)): RETURN 
  182. 41810  PRINT QL +1" of 20: Select the English for:":OUT$ = LA$(QU(QL)): RETURN 
  183. 41900 AN$(Q8) = LA$(QU(SB +Q8 -1)): RETURN 
  184. 41910 AN$(Q8) = EN$(QU(SB +Q8 -1)): RETURN 
  185. 42000  RETURN 
  186. 43000  REM  <CTRL-0x0a>exit<CTRL-0x0a>
  187. 43010 EX = 1: RETURN 
  188. 47999  REM  <CTRL-0x0a>SHUFFLE AN$(1-4)
  189. 48000  FOR L1 = 1 TO 4
  190. 48010 T$ = AN$(L1):T1 =  RND(1) *4 +1:AN$(L1) = AN$(T1):AN$(T1) = T$
  191. 48020  NEXT 
  192. 48030  RETURN 
  193. 48999  REM  <CTRL-0x0a>SHUFFLE<CTRL-0x0a>
  194. 49000  FOR L1 = SB TO 48
  195. 49010 T = QU(L1):T1 =  RND(1) *(48 -SB) +SB:QU(L1) = QU(T1):QU(T1) = T
  196. 49020  NEXT 
  197. 49030  RETURN 
  198. 49999  REM <CTRL-0x0a>prompt<CTRL-0x0a>
  199. 50000  PRINT  CHR$(20): VTAB 24: HTAB 1: PRINT  SPC( 40): HTAB 21 - LEN(PR$)/2: PRINT PR$: RETURN 
  200. 51000  REM <CTRL-0x0a>window print<CTRL-0x0a>
  201. 51020 X = 1
  202. 51030  PRINT " ";
  203. 51040  FOR Z = 1 TO  LEN(OUT$)
  204. 51050  IF  MID$ (OUT$,Z,1) < >" "  THEN 51080
  205. 51060 P$ =  MID$ (OUT$,X,Z -X +1): IF  PEEK(36) + LEN(P$) +1 > PEEK(33)  THEN  PRINT : PRINT " ";: IF J >0  THEN  PRINT "   ";
  206. 51070  PRINT P$;:X = Z +1
  207. 51080  NEXT Z
  208. 51090  IF  PEEK(36) +Z -X +1 > PEEK(33)  THEN  PRINT : PRINT " ";: IF J >0  THEN  PRINT "   ";
  209. 51100  PRINT  MID$ (OUT$,X, LEN(OUT$) -X +1);: IF  PEEK(37) +1 < > PEEK(35)  THEN  PRINT 
  210. 51110  RETURN 
  211. 52000  CALL BOX,3,3,36,3: PRINT " Latin Linguist  by Jim Weiler": RETURN 
  212. 53000  REM <CTRL-0x0a>exit verify<CTRL-0x0a>
  213. 53010  CALL OBOX,12,12,16,8
  214. 53020 OUT$ = "Do you really want to exit the quiz? (Y/N)": GOSUB 51000
  215. 53025 PR$ = "press Y or N": GOSUB 50000
  216. 53030  GET K$
  217. 53040  IF K$ < >"Y"  AND K$ < >"y"  AND K$ < >"N"  AND K$ < >"n"  THEN 53030
  218. 53050  IF K$ = "Y"  OR K$ = "y"  THEN 53070
  219. 53060 EX = 0
  220. 53070  CALL CBOX: RETURN 
  221. 55000  REM <CTRL-0x0a>win sound<CTRL-0x0a>
  222. 55010 D = 18
  223. 55020 P = 41: GOSUB 60000:P = 81: GOSUB 60000:P = 12: GOSUB 60000:P = 21: GOSUB 60000:P = 122: GOSUB 60000:P = 41: GOSUB 60000
  224. 55030  RETURN 
  225. 59000  REM <CTRL-0x0a>input anything<CTRL-0x0a>
  226. 59020  CALL  PEEK(121) + PEEK(122) *256 +32,IN$: REM   GET  COS  LEN SIN l EXP DEL  DEL  INPUT  DIM  , USR COLOR= <CTRL-0x01> GR  ROT=  COLOR= <CTRL-0x02> VTAB  PLOT   RIGHT$ LEN  SHLOAD  SQR`  SHLOAD  SQR``
  227. 59030  RETURN 
  228. 60000  CALL  PEEK(121) + PEEK(122) *256 +32,P,D: REM   GET  COS g EXP R CHR$ ONERR P PLOT  TAN GET   GET  COS g EXP R CHR$ ONERR P PLOT  ATN GET  PLOT 0 TAB(  GR  MID$  MID$  = <CTRL-0x05>  OR  ATN GET <UNKNOWN TOKEN><CTRL-0x13> * = <CTRL-0x05> RESTORE  TAN GET  = <UNKNOWN TOKEN> RIGHT$<CTRL-0x01> =  MID$  IF  TAN GET  =  PEEK````
  229. 60010  RETURN : REM  hummy tone
  230. 61000  CALL  PEEK(121) + PEEK(122) *256 +28: REM 8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF ^ TAB(  IF ) TAB( <CTRL-0x09>  PLOT ) TAB( `
  231. 61010  RETURN : REM  gs mono
  232. 62000  CALL  PEEK(121) + PEEK(122) *256 +28: REM 8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF _ TAB(  IF ) TAB( ) SIN PLOT ) TAB( `
  233. 62010  RETURN : REM  gs color
  234. 63000  REM  copyright
  235. 63010  PRINT 
  236. 63020  PRINT "       The Latin Linguist"
  237. 63030  PRINT "         by Jim Weiler"
  238. 63040  PRINT " Copyright 1989 Softdisk, Inc."
  239. 63045  PRINT "      All rights reserved"
  240. 63050  PRINT "   Published on Softdisk #93"
  241. 63060  PRINT " Subscriptions: 1-800-831-2694"
  242. 63070  PRINT "Changing this notice is illegal"
  243. 63080  VTAB 22: HTAB 12: PRINT "Press a key."
  244. 63090  RETURN